<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
		// 函数
		// 某个特殊功能的代码块
		// 一个函数就是一个功能

		// 作用域  函数外部定义的变量可以在函数内部使用，函数内部定义的变量不能在函数外部使用
		// 在函数内部写 a = 10 省略var的时候，a也是全局变量.
		// 函数里面最好不要写 var a = b = c = 10;此时a是局部变量， b，c是全局变量
		// 变量名提前
		var a=20;
		function t1(){
			// var b=10;
			// c=10;
			// d=10;
			// var a=b=c=10;
			console.log(a);
			var a=10;
			console.log(a);
		}
		// console.log(d);
		t1();
		// console.log(b);
		// console.log(c);
		// undefined	10

		// 函数命名表达式
		// var  fn=function test(){
		// 	console.log("执行了test");
		// }
		// fn();;
		// 闭包
		// 函数里面定义的函数
		// 闭包里面用到的局部变量会被保存在闭包内部
		// 第一种情况，执行两个fn生成了2个a和2个t1；那么f1和f2里面的a就不是同一个a
		var a=10;
		function fn(){
			var a=10;
			function t1(){
				console.log(++a);
			}
			function t2(){
				console.log(++a);
			}
			return [t1,t2];
		}
		var fArr=fn();
		var f1=fArr[0];
		var f2=fArr[1];
		console.log(f1==f2);
		f1();
		f2();
		f1();
		f2();
		f1();
		f2();
	</script>
</body>
</html>